package com.molichuxing.services.property;

/**
 * 订阅里程订单状态枚举
 *
 * @author zoumingyu
 * @date 2019年8月13日
 */
public enum OrderExclusivelStatusEnum {
    /**
     * 待付款
     */
    TRADE_UNPAID(10, "待付款"),
    /**
     * 已取消
     */
    TRADE_CANCELED(0, "已取消"),
    /**
     * 待审核
     */
    TRADE_UNAUDIT(11, "待审核"),
    /**
     * 待提车
     */
    TRADE_UNDELIVERY(12, "待提车"),
    /**
     * 用车中
     */
    TRADE_USE(13, "用车中"),
    /**
     * 审核驳回
     */
    TRADE_REJECTED(15, "审核驳回"),
    /**
     * 退款中
     */
    TRADE_REFUND(16, "退款中"),
    /**
     * 交易结束
     */
    TRADE_FINISH(17, "交易结束"),
    /**
     * 征信待审核
     */
    TRADE_CREDIT_UNAUDIT(18, "征信待审核"),
    /**
     * 审核通过
     */
    TRADE_PASS(19, "审核通过"),
    /**
     * 待还车
     */
    RENEGE_ACCEPTED(30, "待还车"),
    /**
     * 财务结算中
     */
    RENEGE_SETTLEMENT(31, "财务结算中"),
    /**
     * 提交财务信息（代码逻辑用，不存数据库）
     */
    RENEGE_PAYEE(311, "提交财务信息（代码逻辑用，不存数据库）"),
    /**
     * 解除协议确认
     */
    RENEGE_REFUND(32, "解除协议确认"),
    /**
     * 收/退款
     */
    RENEGE_UNPAID(33, "收/退款"),
    /**
     * 退租已完成
     */
    RENEGE_FINISH(34, "退租已完成"),
    /**
     * 诉讼
     */
    LAWSUIT(40, "诉讼");

    int value;
    String name;

    OrderExclusivelStatusEnum(int value, String name) {
        this.value = value;
        this.name = name;
    }

    public int getValue() {
        return value;
    }

    public String getName() {
        return name;
    }

    /**
     * 通过value获取枚举的name
     *
     * @param value
     * @return
     */
    public static String getName(int value) {
        OrderExclusivelStatusEnum enumerate = getEnum(value);
        return enumerate == null ? null : enumerate.getName();
    }

    /**
     * 通过value获取枚举
     *
     * @param value
     * @return
     */
    public static OrderExclusivelStatusEnum getEnum(int value) {
        for (OrderExclusivelStatusEnum enumerate : OrderExclusivelStatusEnum.values()) {
            if (enumerate.getValue() == value) {
                return enumerate;
            }
        }
        return null;
    }
}
